Think Data Structures: Algorithms and Information Retrieval in Java by Allen B. Downey

Think Data Structures: Algorithms and Information Retrieval in Java by Allen B. Downey

Author:Allen B. Downey [Downey, Allen B.]
Language: eng
Format: azw3, pdf
Publisher: O'Reilly Media
Published: 2017-07-07T04:00:00+00:00


Hashing and Mutation

Strings are immutable, and SillyString is also immutable because innerString is declared to be final. Once you create a SillyString, you can’t make innerString refer to a different String, and you can’t modify the String it refers to. Therefore, it will always have the same hash code.

But let’s see what happens with a mutable object. Here’s a definition for SillyArray, which is identical to SillyString, except that it uses an array of characters instead of a String:

public class SillyArray { private final char[] array; public SillyArray(char[] array) { this.array = array; } public String toString() { return Arrays.toString(array); } @Override public boolean equals(Object other) { return this.toString().equals(other.toString()); } @Override public int hashCode() { int total = 0; for (int i=0; i<array.length; i++) { total += array[i]; } System.out.println(total); return total; }

SillyArray also provides setChar, which makes it possible to modify the characters in the array:



Download



Copyright Disclaimer:
This site does not store any files on its server. We only index and link to content provided by other sites. Please contact the content providers to delete copyright contents if any and email us, we'll remove relevant links or contents immediately.